package com.cargo.base.utils;

import java.text.DecimalFormat;
import java.util.regex.Pattern;

/**
 * [数字工具－工具类]
 * 
 * @author guofu
 * @version v1.0 2015-11-16
 */
public class NumberVerifyUtil {

	/**
	 * [是否空、或者为0]
	 * 
	 * @param num
	 * @return
	 */
	public static boolean isEmptyOrZero(Integer num) {
		if (null == num || 0 == num) {
			return true;
		} else {
			return false;
		}
	}
	
	/**
	 * [是否空、或者为0]
	 * 
	 * @param num
	 * @return
	 */
	public static boolean isEmptyOrZero(Long num) {
		if (null == num || 0 == num) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * [是否空、或者为0.0]
	 * 
	 * @param num
	 * @return
	 */
	public static boolean isEmptyOrZero(Double num) {
		if (null == num || 0.0 == num) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * [是否不为空、或者为0]
	 * 
	 * @param num
	 * @return
	 */
	public static boolean isNotEmptyOrZero(Integer num) {
		if (null == num || 0 == num) {
			return false;
		} else {
			return true;
		}
	}

	/**
	 * [是否不为空、或者为0]
	 * 
	 * @param num
	 * @return
	 */
	public static boolean isNotEmptyOrZero(Long num) {
		if (null == num || 0.0 == num) {
			return false;
		} else {
			return true;
		}
	}
	
	/**
	 * [是否不为空、或者为0]
	 * 
	 * @param num
	 * @return
	 */
	public static boolean isNotEmptyOrZero(Double num) {
		if (null == num || 0 == num) {
			return false;
		} else {
			return true;
		}
	}
	
	/**
	 * [对double类型的数字保留2位小数]
	 * 
	 * @param a
	 * @return
	 */
	public static double get2Double(double a) {
		DecimalFormat df = new DecimalFormat("0.00");
		return new Double(df.format(a).toString());
	}

	/**
	 * [对double类型的数字保留2位小数]
	 * 
	 * @param a
	 * @return
	 */
	public static String doubleTo2String(double a) {
		DecimalFormat df = new DecimalFormat("0.00");
		return df.format(a).toString();
	}
	
	 /**
   * [对double类型的数字保留1位小数]
   * 
   * @param a
   * @return
   */
  public static double get1Double(double a) {
    DecimalFormat df = new DecimalFormat("0.0");
    return new Double(df.format(a).toString());
  }

  /**
   * [对double类型的数字保留1位小数]
   * 
   * @param a
   * @return
   */
  public static String doubleTo1String(double a) {
    DecimalFormat df = new DecimalFormat("0.0");
    return df.format(a).toString();
  }
	
	/**
	 * [判断int类型的数字是否在规定int范围内]
	 * @param current	当前值
	 * @param min		较小值
	 * @param max		较大值，为空默认为无限大
	 * @return
	 */
	public static boolean isBetween(Integer current,Integer min, Integer max){
		return null==max?current>=min:current>=min&&current<=max;
	}
	
	/**
	 * [判断int类型的数字是否在规定double范围内]
	 * @param current	当前值
	 * @param min		较小值
	 * @param max		较大值，为空默认为无限大
	 * @return
	 */
	public static boolean isBetween(Integer current,Double min, Double max){
		return null==max?current>=min:current>=min&&current<=max;
	}
	
	
	public static boolean isNumeric(String str){
	    Pattern pattern = Pattern.compile("[0-9]*");
	    return pattern.matcher(str).matches();   
	}
	
	/**
	 * 
	 * isInteger:判断字符串是否是整数
	 * @param value
	 * @return 
	 * @return :boolean 
	 * @Creator:wizard
	 * @Date:2016年11月9日 下午3:55:35
	 */
	public static boolean isInteger(String value) {
		try {
			Integer.parseInt(value);
			return true;
		} catch (NumberFormatException e) {
			return false;
		}
	}
}
